package co.yixiang.exception;

import co.yixiang.api.ApiCode;
import lombok.Getter;
import org.springframework.http.HttpStatus;

import static org.springframework.http.HttpStatus.BAD_REQUEST;

/**
 * 自定义异常类，用于处理不合法的请求参数或请求限制条件
 * 继承自RuntimeException，采用非检查性异常，以便于在控制器层统一处理
 */
@Getter
public class BadLimitRequestException extends RuntimeException{

    /**
     * 存储异常对应的状态码
     * 默认为BAD_LIMIT_EXCEPTION的代码，表示请求限制异常
     */
    private Integer status = ApiCode.BAD_LIMIT_EXCEPTION.getCode();

    /**
     * 构造函数，接收一个字符串参数作为异常消息
     * 主要用于创建异常对象时提供错误信息
     *
     * @param msg 异常消息，描述错误详情
     */
    public BadLimitRequestException(String msg){
        super(msg);
    }

    /**
     * 构造函数，接收HttpStatus和字符串参数，用于定制化异常状态码和消息
     * 当需要指定特定的HTTP状态码时使用此构造函数
     *
     * @param status HttpStatus对象，定义了异常的状态码
     * @param msg    异常消息，描述错误详情
     */
    public BadLimitRequestException(HttpStatus status, String msg){
        super(msg);
        this.status = status.value();
    }
}
